home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 45
/
Aminet 45 (2001)(GTI - Schatztruhe)[!][Oct 2001].iso
/
Aminet
/
dev
/
e
/
yaec.lha
/
examples
/
timing.e
< prev
next >
Wrap
Text File
|
2001-08-12
|
2KB
|
72 lines
OPT LARGE
MODULE 'dos/dos'
CONST TICKS_PER_MINUTE=TICKS_PER_SECOND*60, LOTS_OF_TIMES=500000
DEF x:PTR TO LONG, y, offset
PROC fred(n)
DEF i
i:=n+x
ENDPROC
/* Repeat evaluation of an expression */
PROC repeat(exp)
DEF i
FOR i:=0 TO LOTS_OF_TIMES
Eval(exp) /* Evaluate the expresssion */
ENDFOR
ENDPROC
/* Time an expression, and set-up offset if not done already */
PROC test(exp, message)
DEF t
IF offset=0 THEN offset:=time(`0) /* Calculate offset */
t:=time(exp)
WriteF('\s:\t\d ticks\n', message, t-offset)
ENDPROC
/* Time the repeated calls, and calculate number of ticks */
PROC time(x)
DEF ds1:datestamp, ds2:datestamp
Forbid()
DateStamp(ds1)
repeat(x)
DateStamp(ds2)
Permit()
IF CtrlC() THEN Raise(1)
ENDPROC ((ds2.minute-ds1.minute)*TICKS_PER_MINUTE)+ds2.tick-ds1.tick
PROC main()
x:=9999
y:=1717
test(`x+y, 'Addition')
test(`y-x, 'Subtraction')
test(`x*y, 'Multiplication')
test(`x/y, 'Division')
test(`x OR y, 'Bitwise OR')
test(`x AND y, 'Bitwise AND')
test(`x=y, 'Equality')
test(`x<y, 'Less than')
test(`x<=y, 'Less than or equal')
test(`y:=1, 'Assignment of 1')
test(`y:=x, 'Assignment of x')
test(`y++, 'Increment')
test(`IF FALSE THEN y ELSE x, 'IF FALSE')
test(`IF TRUE THEN y ELSE x, 'IF TRUE')
test(`IF x THEN y ELSE x, 'IF x')
test(`fred(2), 'fred(2)')
/* some more tests.. */
->test(`Mul(10,20), 'Mul(10,20)')
->test(`Div(10,20), 'Div(10,20)')
->test(`Char({x}), 'Char({x})')
->test(`x!+100.0-y!*100, 'x!+100.0-y!*100')
->test(`(x := FastNew(100)) BUT FastDispose(x, 100) BUT NIL, 'x:=FastNew(100) BUT FastDispose(x, 100)')
->test(`NIL, 'blabla')
ENDPROC